using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._SpaceTimePatternMiningTools._SpaceTimeCubeVisualization
{
    /// <summary>
    /// <para>Visualize Space Time Cube in 3D</para>
    /// <para>Visualizes  the variables stored in a netCDF cube created with the Space Time Pattern Mining tools.  Output from this tool is a three-dimensional representation uniquely rendered based on the variable and theme specified.</para>
    /// <para>可视化存储在使用时空模式挖掘工具创建的 netCDF 多维数据集中的变量。 此工具的输出是根据指定的变量和主题唯一呈现的三维表示。</para>
    /// </summary>    
    [DisplayName("Visualize Space Time Cube in 3D")]
    public class VisualizeSpaceTimeCube3D : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public VisualizeSpaceTimeCube3D()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_cube">
        /// <para>Input Space Time Cube</para>
        /// <para>The netCDF cube that contains the variable to be displayed. This file must have an .nc extension and must have been created using either the Create Space Time Cube By Aggregating Points or Create Space Time Cube From Defined Locations tool.</para>
        /// <para>包含要显示的变量的 netCDF 多维数据集。此文件必须具有 .nc 扩展名，并且必须已使用“通过聚合点创建时空立方体”或“从定义的位置创建时空立方体”工具创建。</para>
        /// </param>
        /// <param name="_cube_variable">
        /// <para>Cube Variable</para>
        /// <para>The numeric variable in the netCDF cube that you want to explore. The space-time cube will always contain the COUNT variable if aggregation was used when creating the cube. Any summary fields or variables will also be available if they were included when the cube was created.</para>
        /// <para>要浏览的 netCDF 多维数据集中的数值变量。如果在创建多维数据集时使用了聚合，则时空多维数据集将始终包含 COUNT 变量。如果在创建多维数据集时包含任何汇总字段或变量，则它们也将可用。</para>
        /// </param>
        /// <param name="_display_theme">
        /// <para>Display Theme</para>
        /// <para><xdoc>
        ///   <para>Specifies the characteristic of the Cube Variable parameter to be displayed. Options will vary depending on how the cube was created and the analyses that were run.</para>
        ///   <bulletList>
        ///     <bullet_item>Value—The numeric value of the Cube Variable parameter will be displayed.</bullet_item><para/>
        ///     <bullet_item>Hot and cold spot results—The statistical significance of each bin will be displayed based on the space-time hot spot analysis run in Emerging Hot Spot Analysis.</bullet_item><para/>
        ///     <bullet_item>Estimated bins—Bins with estimated values will be displayed.</bullet_item><para/>
        ///     <bullet_item>Cluster and outlier results—The cluster or outlier type (COType) for each bin determined by Local Outlier Analysis will be displayed.</bullet_item><para/>
        ///     <bullet_item>Temporal aggregation count—The count of records aggregated into each space-time bin will be displayed.</bullet_item><para/>
        ///     <bullet_item>Forecast results—The input time steps and the resulting forecasted values from the Time Series Forecasting tools will be displayed.</bullet_item><para/>
        ///     <bullet_item>Time series outlier results—The results of the Outlier Option parameter in the Time Series Forecasting tools will be displayed.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Value is the numeric value of the Cube Variable parameter and is always available. Estimated bins values are only available for the summary fields that were included when the cube was created. Hot and cold spot results values will only be available for the Cube Variable parameter value for which Emerging Hot Spot Analysis has been run. Cluster and outlier results values will only be available for Cube Variables for which Local Outlier Analysis has been run. Temporal aggregation count values will only be available for defined location cubes that have been aggregated temporally. Forecast results values will only be available for the Cube Variable parameter value for which a Time Series Forecasting tool has been run. Time series outlier results values will only be available when the Outlier Option parameter has been set for a tool in the the Time Series Forecasting toolset.</para>
        ///   <para>For in-depth information about each option, including descriptions of the output and created charts, see the Visualization display themes for the space-time cube topic.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要显示的 Cube Variable 参数的特征。选项将因多维数据集的创建方式和运行的分析而异。</para>
        ///   <bulletList>
        ///     <bullet_item>值—将显示“立方体变量”参数的数值。</bullet_item><para/>
        ///     <bullet_item>热点和冷点结果—将根据新兴热点分析中运行的时空热点分析显示每个图格的统计显著性。</bullet_item><para/>
        ///     <bullet_item>估计图格—将显示具有估计值的图格。</bullet_item><para/>
        ///     <bullet_item>聚类和异常值结果—将显示由局部异常值分析确定的每个图格的聚类或异常值类型 （COType）。</bullet_item><para/>
        ///     <bullet_item>时态聚合计数—将显示聚合到每个时空图格中的记录计数。</bullet_item><para/>
        ///     <bullet_item>预测结果 - 将显示时间序列预测工具中的输入时间步长和生成的预测值。</bullet_item><para/>
        ///     <bullet_item>时间序列异常值结果—将显示时间序列预测工具中异常值选项参数的结果。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Value 是 Cube Variable 参数的数值，并且始终可用。估计的图格值仅适用于创建多维数据集时包含的汇总字段。热点和冷点结果值仅适用于已运行新兴热点分析的多维数据集变量参数值。聚类和异常值结果值仅适用于已运行局部异常值分析的多维数据集变量。时态聚合计数值仅适用于已临时聚合的已定义位置多维数据集。预测结果值仅适用于已运行时序预测工具的多维数据集变量参数值。仅当为时序预测工具集中的工具设置了离群值选项参数时，时序异常值结果值才可用。</para>
        ///   <para>有关每个选项的详细信息（包括输出和创建的图表的说明），请参阅时空多维数据集的可视化显示主题主题。</para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_output_features">
        /// <para>Output Features</para>
        /// <para>The output feature class results. This feature class will be a three-dimensional map representation of the display variable that can be displayed in a 3D scene.</para>
        /// <para>输出要素类结果。此要素类将是可在 3D 场景中显示的显示变量的三维地图制图表达。</para>
        /// </param>
        public VisualizeSpaceTimeCube3D(object _in_cube, object _cube_variable, _display_theme_value? _display_theme, object _output_features)
        {
            this._in_cube = _in_cube;
            this._cube_variable = _cube_variable;
            this._display_theme = _display_theme;
            this._output_features = _output_features;
        }
        public override string ToolboxName => "Space Time Pattern Mining Tools";

        public override string ToolName => "Visualize Space Time Cube in 3D";

        public override string CallName => "stpm.VisualizeSpaceTimeCube3D";

        public override List<string> AcceptEnvironments => ["geographicTransformations", "outputCoordinateSystem", "scratchWorkspace", "workspace"];

        public override object[] ParameterInfo => [_in_cube, _cube_variable, _display_theme.GetGPValue(), _output_features];

        /// <summary>
        /// <para>Input Space Time Cube</para>
        /// <para>The netCDF cube that contains the variable to be displayed. This file must have an .nc extension and must have been created using either the Create Space Time Cube By Aggregating Points or Create Space Time Cube From Defined Locations tool.</para>
        /// <para>包含要显示的变量的 netCDF 多维数据集。此文件必须具有 .nc 扩展名，并且必须已使用“通过聚合点创建时空立方体”或“从定义的位置创建时空立方体”工具创建。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Space Time Cube")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_cube { get; set; }


        /// <summary>
        /// <para>Cube Variable</para>
        /// <para>The numeric variable in the netCDF cube that you want to explore. The space-time cube will always contain the COUNT variable if aggregation was used when creating the cube. Any summary fields or variables will also be available if they were included when the cube was created.</para>
        /// <para>要浏览的 netCDF 多维数据集中的数值变量。如果在创建多维数据集时使用了聚合，则时空多维数据集将始终包含 COUNT 变量。如果在创建多维数据集时包含任何汇总字段或变量，则它们也将可用。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Cube Variable")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _cube_variable { get; set; }


        /// <summary>
        /// <para>Display Theme</para>
        /// <para><xdoc>
        ///   <para>Specifies the characteristic of the Cube Variable parameter to be displayed. Options will vary depending on how the cube was created and the analyses that were run.</para>
        ///   <bulletList>
        ///     <bullet_item>Value—The numeric value of the Cube Variable parameter will be displayed.</bullet_item><para/>
        ///     <bullet_item>Hot and cold spot results—The statistical significance of each bin will be displayed based on the space-time hot spot analysis run in Emerging Hot Spot Analysis.</bullet_item><para/>
        ///     <bullet_item>Estimated bins—Bins with estimated values will be displayed.</bullet_item><para/>
        ///     <bullet_item>Cluster and outlier results—The cluster or outlier type (COType) for each bin determined by Local Outlier Analysis will be displayed.</bullet_item><para/>
        ///     <bullet_item>Temporal aggregation count—The count of records aggregated into each space-time bin will be displayed.</bullet_item><para/>
        ///     <bullet_item>Forecast results—The input time steps and the resulting forecasted values from the Time Series Forecasting tools will be displayed.</bullet_item><para/>
        ///     <bullet_item>Time series outlier results—The results of the Outlier Option parameter in the Time Series Forecasting tools will be displayed.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Value is the numeric value of the Cube Variable parameter and is always available. Estimated bins values are only available for the summary fields that were included when the cube was created. Hot and cold spot results values will only be available for the Cube Variable parameter value for which Emerging Hot Spot Analysis has been run. Cluster and outlier results values will only be available for Cube Variables for which Local Outlier Analysis has been run. Temporal aggregation count values will only be available for defined location cubes that have been aggregated temporally. Forecast results values will only be available for the Cube Variable parameter value for which a Time Series Forecasting tool has been run. Time series outlier results values will only be available when the Outlier Option parameter has been set for a tool in the the Time Series Forecasting toolset.</para>
        ///   <para>For in-depth information about each option, including descriptions of the output and created charts, see the Visualization display themes for the space-time cube topic.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要显示的 Cube Variable 参数的特征。选项将因多维数据集的创建方式和运行的分析而异。</para>
        ///   <bulletList>
        ///     <bullet_item>值—将显示“立方体变量”参数的数值。</bullet_item><para/>
        ///     <bullet_item>热点和冷点结果—将根据新兴热点分析中运行的时空热点分析显示每个图格的统计显著性。</bullet_item><para/>
        ///     <bullet_item>估计图格—将显示具有估计值的图格。</bullet_item><para/>
        ///     <bullet_item>聚类和异常值结果—将显示由局部异常值分析确定的每个图格的聚类或异常值类型 （COType）。</bullet_item><para/>
        ///     <bullet_item>时态聚合计数—将显示聚合到每个时空图格中的记录计数。</bullet_item><para/>
        ///     <bullet_item>预测结果 - 将显示时间序列预测工具中的输入时间步长和生成的预测值。</bullet_item><para/>
        ///     <bullet_item>时间序列异常值结果—将显示时间序列预测工具中异常值选项参数的结果。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Value 是 Cube Variable 参数的数值，并且始终可用。估计的图格值仅适用于创建多维数据集时包含的汇总字段。热点和冷点结果值仅适用于已运行新兴热点分析的多维数据集变量参数值。聚类和异常值结果值仅适用于已运行局部异常值分析的多维数据集变量。时态聚合计数值仅适用于已临时聚合的已定义位置多维数据集。预测结果值仅适用于已运行时序预测工具的多维数据集变量参数值。仅当为时序预测工具集中的工具设置了离群值选项参数时，时序异常值结果值才可用。</para>
        ///   <para>有关每个选项的详细信息（包括输出和创建的图表的说明），请参阅时空多维数据集的可视化显示主题主题。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Display Theme")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _display_theme_value? _display_theme { get; set; }

        public enum _display_theme_value
        {
            /// <summary>
            /// <para>Value</para>
            /// <para>Value—The numeric value of the Cube Variable parameter will be displayed.</para>
            /// <para>值—将显示“立方体变量”参数的数值。</para>
            /// </summary>
            [Description("Value")]
            [GPEnumValue("VALUE")]
            _VALUE,

            /// <summary>
            /// <para>Hot and cold spot results</para>
            /// <para>Hot and cold spot results—The statistical significance of each bin will be displayed based on the space-time hot spot analysis run in Emerging Hot Spot Analysis.</para>
            /// <para>热点和冷点结果—将根据新兴热点分析中运行的时空热点分析显示每个图格的统计显著性。</para>
            /// </summary>
            [Description("Hot and cold spot results")]
            [GPEnumValue("HOT_AND_COLD_SPOT_RESULTS")]
            _HOT_AND_COLD_SPOT_RESULTS,

            /// <summary>
            /// <para>Cluster and outlier results</para>
            /// <para>Cluster and outlier results—The cluster or outlier type (COType) for each bin determined by Local Outlier Analysis will be displayed.</para>
            /// <para>聚类和异常值结果—将显示由局部异常值分析确定的每个图格的聚类或异常值类型 （COType）。</para>
            /// </summary>
            [Description("Cluster and outlier results")]
            [GPEnumValue("LOCAL_OUTLIER_RESULTS")]
            _LOCAL_OUTLIER_RESULTS,

            /// <summary>
            /// <para>Estimated bins</para>
            /// <para>Estimated bins—Bins with estimated values will be displayed.</para>
            /// <para>估计图格—将显示具有估计值的图格。</para>
            /// </summary>
            [Description("Estimated bins")]
            [GPEnumValue("ESTIMATED_BINS")]
            _ESTIMATED_BINS,

            /// <summary>
            /// <para>Temporal aggregation count</para>
            /// <para>Temporal aggregation count—The count of records aggregated into each space-time bin will be displayed.</para>
            /// <para>时态聚合计数—将显示聚合到每个时空图格中的记录计数。</para>
            /// </summary>
            [Description("Temporal aggregation count")]
            [GPEnumValue("TEMPORAL_AGGREGATION_COUNT")]
            _TEMPORAL_AGGREGATION_COUNT,

            /// <summary>
            /// <para>Forecast results</para>
            /// <para>Forecast results—The input time steps and the resulting forecasted values from the Time Series Forecasting tools will be displayed.</para>
            /// <para>预测结果 - 将显示时间序列预测工具中的输入时间步长和生成的预测值。</para>
            /// </summary>
            [Description("Forecast results")]
            [GPEnumValue("FORECAST_RESULTS")]
            _FORECAST_RESULTS,

            /// <summary>
            /// <para>Time series outlier results</para>
            /// <para>Time series outlier results—The results of the Outlier Option parameter in the Time Series Forecasting tools will be displayed.</para>
            /// <para>时间序列异常值结果—将显示时间序列预测工具中异常值选项参数的结果。</para>
            /// </summary>
            [Description("Time series outlier results")]
            [GPEnumValue("TIME_SERIES_OUTLIER_RESULTS")]
            _TIME_SERIES_OUTLIER_RESULTS,

        }

        /// <summary>
        /// <para>Output Features</para>
        /// <para>The output feature class results. This feature class will be a three-dimensional map representation of the display variable that can be displayed in a 3D scene.</para>
        /// <para>输出要素类结果。此要素类将是可在 3D 场景中显示的显示变量的三维地图制图表达。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _output_features { get; set; }


        public VisualizeSpaceTimeCube3D SetEnv(object geographicTransformations = null, object outputCoordinateSystem = null, object scratchWorkspace = null, object workspace = null)
        {
            base.SetEnv(geographicTransformations: geographicTransformations, outputCoordinateSystem: outputCoordinateSystem, scratchWorkspace: scratchWorkspace, workspace: workspace);
            return this;
        }

    }

}